{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "fc7fbd6b",
   "metadata": {},
   "source": [
    "# FIR滤波器结构：第Ⅱ类线性相位型\n",
    "\n",
    "画出单位脉冲响应为 h(n)=1,-0.5,1,1.5,1.5,1,-0.5,1 的第II型线性相位滤波器的幅度函数和相位函数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "69b2082c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbgAAAEoCAYAAAAqrOTwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABV/klEQVR4nO3dd3xV9f348dc7e+8FBEjC3iNsAYN71YGjVuu2uFrb2qWtHd9WW3/aWmtVBMWqWEXce1QhCspWluwte4QVNsn798fnJFzDDSTkJje5vJ+Px31w77nnnPu+h5vzPp/P+QxRVYwxxphQExbsAIwxxpj6YAnOGGNMSLIEZ4wxJiRZgjPGGBOSLMEZY4wJSZbgjKkjEZEA7CNdRCICEU8g+PtO9RmfiCTU177NycsSnAkZIvKwiNxWZdnzItIhAPvuIiI3eM8vF5GnvOffA57ws/45ItLZ5/VlInKqiFT3N/cx0KbKPn4vIndXE8/VIvJ8LeK/UURG+ry+U0T+coxNBojI/6os+0xEelez/08qvq+IRPl5P1JEwqvZ9izgw+PEH13TCwkR+bGIxIjIBBHpJiK/EpEkERklIkNrsg8TGhrNFaMxdSEibYA7gKUichMQDowCrgQKReQQEAVcpqoLRORZYKqqPlllP36XA3uB+0VkGXAIOCAiccCDwF1V9hEG/AO4xmfxKcAq4AwR2aWqD1XZ/wHgoLf9/cAUb9nhar7yIe+Bd9J+B1jp835nIE1VS73Xw4EPfN5/B/hIRP6qqvv87L8b8IXPd0oBMoCvq4lnf0X8wL9EpFuV96OAXwCTROQC4A8+64cDXUVksvc6Gvifqv7W57Mn44551Y67nYA4oI+qzvKWRQD34o5dPHClqj4kIqcB/6+a+E0IsgRnmjwRyQBeBb4HxAKXATfgksTpQCZwlapedoL7jwZWA3fiEtUi761+wATgQxGJVtUD3vIfAq8D+0XkdFX9FNiDSwIPAJeKSD9Vne6VSqKAcuB8EXkBKATeBDoC5RXrqOoBEYkEknBJIFxEkgEBJqrqxT4xr+JIAswDzgVuFJE3gNbe5+3GJRy849ZXVfeKyDtAX2CfiFwM3Od9ZgruAgIgR1UTRKQ/8CiQA/xZRNqoan8R+RSXuCo8oqqTvOdJwGRVvUtE0oBIVd3kXRj0VtWZvsdfVXcAXX2+W3PcxcNg4F3gOVVd6b0XA6wHFEgFioDPvYuABFVdUfF/6vP/ZUKUJTgTCpKBF4Cf4k7q6biEtx9XagDIEJEYVd1/Avt/C3eyPIQ7OXcDNuCS3R5c6SJaRM7AJdPbgPOAp4G5IpIODAJaAFcAJbhSx3SglbceuJP49UAvYCSQjTtRXwN8C1wM9ASewiWUCKCH9939KfP+vQd3O6JEVS/xXcFLkFGqusVncRugo6ruEJH7gETgOmCoqi72tlvus/7XQC6uVFbxXSJVdai37pXecan8WEC9C4fLvePyB++9d0WkGRChqod84kwEnsVdZJyJS9KXA3cDO332HQUMxV189AEW4o73bUCYiMzEHfPdItJTVXdXc+xMCLAEZ5o8VV0uIo8AY3DVeopLFLm40gfAYlyp5UT2fw6Ady/vWeBJXPLYCAwBfqaqC711rgGaAZOATcB4XHJYDExS1T96JZVCL/F1xJ2EewNjgZuBmap6voj8Ejisqo/4xDID6CkiHwNrVPVmEekD3OudvCs08+IpBM4GNnuv83AlnlO99S7DXRh099m26nE61X20S25V1qnumLb3SqPgktErPu8JrvqwGHcxEuVzbywV+Ax30VBRRfkc8BzuXucoXELfDLyBu0gYKiIXq+r1wD5gBS5p7gd2ANtxFxiPqepfRGQc8A9LbqHPEpwJFXnAyz6vM3BX8+d4r3OASI7c96kxrxruRqAdMALoApyuqveJSBHwloiMVtW/A0+o6r9F5GXgj8AaXDXa1cBwETkFSPCW3wtk4U7mvYF1wNvAruPE0xxXSlngNTQZCXzmp4oSXAK9G1c1iqquEpHWItJeVZfgEtvrxzkE04GnRWSMqt7kLatIbNUNZns+LpFV+NbneQywX1UHisgIYADwjPfe+IqSn49IoFxVi0XkS+Aib/nPVHWxV3KuOJflAluBXwN/xv0fXOzto9BbpxXgWwI1IcoSnAkVLYG1FSd5EbkZyFXVPwVg33HAq6r6P2/fKbgkhXfS7YdXYsJVvd2NS1YHcMnwSmAB0B+4ELgJmOUlmCXePu/09veGiPxNRP6BK92oiFwHzFPVa73PuBv4BFeC3Iq7zzRMRGb7xNzc299/vf0/4PPea7iT/oO4arxf+/nOk0SkDHdhcLeqThaRv4vI2ar6kc96/roTjMSVbA/ikskioLtXJbgC1/Bjs9facjaQhrufBl4irkK9/RbgEuEoXJXnuyJyHt9tiJMG/Bz4P1y17Du4quVBQLGIpAKJqlri53NMiLEEZ0JFJjDYp5ouA1f1dYHPOnNV9cYT2Pe/gT0i8kfvdR6Q5dPqT4AEEbkLl8h+iquS/AuuWuzHACJyO+5e0E3AD6r7MFW9B7jHXxWluGb6Z+FKJ6ep6t1eFWX/akpw/nwM/Mqr1u2AK6FVNcTnHlyFfwDXishnQEXrzKoJLgyXUB7BVdH+GHc8xnGk9NwC1wDoQVzDIDhSwusvIltU9SWffSquxHoNruq5FbCFI4n+t5Urqs4SkcG4FqD9cdWz56nqPhF5Hdd4Z0I1x8WEGEtwJiSo6ivAKyKSDTyOq0J7v6IEJyJ9cSfEE9m3bwu+DNzJ8wVgvare62eTZiISj2sQ0h6Y6t13W40rXfTGnaBPxHzcfbOOJ7g9uPuD/XFVgzN9G3Mcxxu4KtQUjlSjRvq8/zNcibQcV4LbiUtml+FKoxV6AGO90ur/8/Z5BS5xb6iS3MAl0Xm4ZJWDa6X6saq+5pUCS6us3xyYietb15EjDVhex5UQj9X/z4QQ6+htmjxxeonIv3D3u0YCo33euw9Xophc/V6O+xnh4jp1fwb8EtcYJF5EPhKRQT7rnSEi64DPcSftHeL6hH2KS3A7cInlDyLiW5qMwDX7jxQ/I4aISJSIhKnqQVWdjzvpV5SewvCqKCseuJO8734igN4isgT4CrgK1wCmv4gsEpHFIlLRjSISV0U52/ueFUms3PvMc4Bl3rJpuKQdATyqqjd78RTiqh1zvPWTve+RjOu79g2Aqm7A3SebiWvx6q+ELcB2r3pTcYn2SW/7l3DdHXwtw5UYo4HfAV1EZDjuHu0vgdEiMsTP55gQYyU4EwqycCfJl4G7VLVMRO4AolVVvSq1N337V3kt7o5SdblX8voPriXhJOAS794ZwM/FjcLxqHdvZxCuZWBfVV3vbX8RLun+zCux5OFKFs1x3QEqROIaxdyI66/m20T+MtzJ+lagojNztLc+3r/++sFF4loSgrvvtRDopKoV3Qd8v6dw5IL3IVwJ64CI9MC1TATXbeFxYCpe9wtVPQwcFtc/zzeeX6rqhz77n+otPxdXYhvsVR938b7LP3HdL2aKyCZc9eYvVXUd7n7mI/LdgUx+7PM6Aa8DurjO9+/h7u0NV9WNIvJD4HZch+8lIjILd4FxsaruqXosTOgQm9HbmGMTNwTVKlXde4x1Wqvq6mrei1LVg76vgSRV3VqHmGJx/dd2evuL8zpEB52IJOFaSfptseolwwxcVeWsKn3wKhqTtKvSmMWYWrMEZ4wxJiTZPThjjDEhyRKcMcaYkHTSNzLJyMjQvLy8Ou1jz549xMfHByagemRxBpbFGVgWZ2A1hTgDEeOsWbO2qmqm3zdV9aR+FBYWal1NnDixzvtoCBZnYFmcgWVxBlZTiDMQMeL6cvo9v1sVpTHGmJBkCa6Ovi3Zy7rScjbs3Mf+Q0d1LzLGGBMkJ/09uLr65ydLeP2rfTB5AmECrdPj6dI8iSHtMijqkEV2UkywQzTGmJOSJbg6umFQPtllW2lZ0J6Nu/azdNNupq8s4d25GwgTGNIukx/0a8mZnXMIDztq4HVjjDH1xBJcHXXLTWZbswiK+reqXKaqLN60m/fmbuDVWWu59YWvaJMZz49Pa8tFPVoQZonOGGPqnd2DqwciQsecJH5xVgcm/+Y0HruqF5HhYfz85TlcMvJLZn+7I9ghGmNMyAvJBCciESKyRkSKvUe3YMUSHiZc0L057985hH9c3oP1O/Zx8eNf8Ls35rHnwOHj78AYY8wJCdUqyu7AS6r6m2AHUiEsTLi0MJezumTzyCdLeeaLlUxetpWHr+hBYeu0YIdnjDEhJyRLcLj5ti4QkekiMsbf/FrBkhgTye8v6My4Hw2grFy5/MkpPDZhKeXlNui1McYEUkjOJuDN3rxWVTeIyPPAq6r6ts/7I4ARANnZ2YXjxo2r0+eVlpaSkJBQ6+32HVae++YAUzeU0TMznB91jyY+sv4aoJxonA3N4gwsizOwLM7ACUSMw4YNm6Wqffy+Wd0QJ035gZvosuL5ncAvqls32EN1lZeX67NfrNQ297ynQx+coAs37KxzPNVpCkP3qFqcgWZxBpbFGTg2VNeJGSsiPUQkHLgYmBPkeKolIlw3KI+XbxnA/kNlXPrEl0xcvDnYYRljTJMXqgnuz8BY3LT1U1T1k+CGc3yFrdN4647B5GXEc9OzMxg71e/k0MYYY2ooJBOcqs5X1e6q2k1VfxfseGoqJzmG8bcMpKhDFr9/cz73vbuAMmt8YowxJyQkE1xTFh8dwVPX9uH6QXk8PXklt74wi70Hrb+cMcbUliW4Rig8TPjThV344/c68+nCTVw5eiqbd+8PdljGGNOkWIJrxG44JZ9R1/RhyabdDH/iS5Zt3h3skIwxpsmwBNfIndk5m5dHDGT/oXKGP/ElU5ZvC3ZIxhjTJDSaET5M9Xq0TOGN2wdxw7MzuPaZaTx4WXcu6ZUb7LCM4eDhchZs2MW67fvYsns/URHhJMVG0CE7kYLMBJsiygSVJbgmomVaHK/dOohbXpjJz1+ew7cl+/jJaW0RsROIaViHy8r5ZOEmxs9cy9QV29h70P9M9gnREZzWMYtLerdgaLtMS3amwVmCa0KS4yJ57sZ+3P3aPB7+3xK+LdnLX4d3IzLcappN/SsvV177ai3//N8S1u/cT/PkGC4rzGVgQTr5mfFkJERzqKycHXsPsWD9LmasKuGD+Rt5e8562mYl8NPT23F+t2Y2H6JpMJbgmpjoiHAevqIHLdPiePTTpWzYuZ/Hr+5NcmxksEMzIWzRxl386pW5zFu3kx4tU/jThV04vVO231JZs+RYOjVL4tLCXP7voi589M0m/v3pUn7y0tc8P2UVfxvenbZZjXuMRBMa7NK/CRIR7jqzPQ9d1p2pK7Zx0WOTWbhhV7DDMiFIVfnPFyu58LEv2LBzH498vydv3DaIs7rk1KjKMToinAt7NOfDnw3lwcu6s2RTKef9axJjJq+sGCvWmHpjJbgm7PI+LcnLiOeO/37FJU98wd+Gd2tSjU8OHC5j2eZSVm/by6pteygpPcjeQ2VsXH+AKXsXkpEQTV5GPF2aJ9E8JTbY4Z50Dhwu4+7X5vHG1+s4vWMW/++y7mQkRJ/QvsLDhCv6tGRYhyzueX0ef3l3ATNXlfDgZd1JjLHaB1M/LME1cX3z0nj3zsH8+MWv+fnLc5ixajv3nt+JuKjG91+rqsxft4sP5m9gxqoS5qzdycHD5ZXvx0aGEx8dzoGDh/liwyoO+LzXKi2OU9tncnGvFvRulWKNa+rZzr2HuPn5GcxYtZ1fntWeO4YFpkFTZmI0T11byFOTVvD/PlzM6lFTefaGvmQlxQQgamO+q/GdBU2tZSXG8N+b+/P3jxYzetIKpizfxsNX9KBXq9RghwbA8i2lvD17PW/PWc/KrXuICBO6tkjm2gGt6dkqhfyMeFqnx5MQ7X6OxcXFFBUVsWPvQVZs3cPsNTuYsmIb42d+y9ipq2mblcAtQwu4qGcLoiKslj3Qduw9yA/HTGPJxlIeu6oXF3RvHtD9iwgjhrahfXYit//3K4aP/JLnbuwX0M8wBizBhYzI8DDuOa8Tp3bI5Jfj53DpyC+58ZR8fnpGu6BUAW3YuY9352zgrTnrmL9uFyIwID+dW4YWcE7XHFLioo67j5S4KHq3iqJ3q1RuHJxP6YHDfDBvA898sYpfvTqXf09Yxu/O78RZnbOtRBcg2/cc5Oqnp7FsSymjri1kWIesevusog5ZjBsxgBufncFlI7/k5z3D6+2zzMnJElyIGdQmgw9/PpS/vreQMV+s5K0567nn3I5c1LNFvX/29j0HeX/+Bt6evZ7pq0pQhe65ydx7ficu6N6cnOS6VUMlREdweZ+WXFaYS/HiLfztg4XcMnYWQ9tn8v8u7UazZLtPVxe79x/ih2Nccnvq2j6c2j6z3j+ze24Kr902iCtHT+WhGfvp3283HXIS6/1zzcnBElwISoqJ5IFLu3Nlv1b88a353DV+Do9PXMbpzQ4zuKyciAD2m9u1/xCfLtzEO3M28PmSLRwuVwoy4/nZ6e25sGdz8jPiA/ZZFUSEYR2zGNIug7FTV/Pgh4s565+fc/8l3biwR2Cr004WBw+Xc9sLX7F4426euq5hkluF1unxvPSjAVz878+4+umpjBsxgLZZluRM3VmCC2E9W6bwxu2n8P78DTw2YRmj5x7gndUTuaRXCy4tzKVN5on1Rdqwcx+Tlmzlo282MmnpVg6WldMsOYabBufzvR7N6dI8qUGqDCPCw7jhlHyGdcjiF6/M4c6XvmbOtzu459yOAU3ioU5Vufv1uUxetpWHLuter9WS1cnLiOfufjH8Y3Y5Vz89jddvP4UW1nLW1JEluBAXFiZc0L0553VtxiOvfMq8vYk8+dlyniheTtusBE5pk06Plil0yEmkeXIsybGRlSNN7D9UxpbdB1i/Yx8LN+xiwYZdzFy9nRVb9gDQIiWWawe25txuzejVMiVoI1TkZcQzbsQA7n9vIWMmr2Thhl08flVvUuOPf5/PwL8+XcrrX63j52e05/I+LYMWR058GGNv6sPlT07h+mem8+qtg0iOsy4E5sRZgjtJhIUJvbMjuKuoH5t376+sUhw/cy3PTVlduV54mBAZLqjynWb6AOnxUXTPTeaqfq0Y3C6DDtmJjaZxR2R4GH+6sAtdWyTz2zfmcfmoKYy9qZ/dlzuO/y3YxCOfLGV47xbceXrbYIdDx5wkRl1TyPXPzOBHY2fy/I39iIm0xifmxFiCOwllJbrqxJsG53OorJzV2/aweGMpm3btZ9ueAxwucyNMJMVGkpUYTVZSDB1zEslKjG40Ca06lxXmkpsay83PzeSykS7JFZxgVWyoW76llLtenk23Fsn89ZJujeb/dlCbDP5+RQ/ufOlr7ho/m8d+0NvGrzQnpFElOBGJB/arqv/hyU3ARYaH0TYrMaRu6g8oSGfciAFc98x0rhg1hRd/NID22aHz/QKh9MBhbhk7i8iIMJ68prDRlZIu7NGcTTv3c//7C/lHxmJ+dXbHYIdkmqCg3okXkTARuUpE3hORzcAiYIOIfCMiD4lIu2DGZ5quri2SGX/rQMJEuPrpaazYUhrskBoNVeVXr8xhxZZSHvtBr0bbmOPmIfn8oF9LHp+4nLdmrwt2OKYJCnZTs4lAG+AeIEdVW6pqFjAEmAo8ICI/DGaApulqk5nAiz/qT3m5ctVT01izbW+wQ2oUXpi6mg/mb+Q353RkUNuMYIdTLRHh/y7sSr/8NH716lxmf7sj2CGZJibYCe4MVf2Lqs5V1coWDapaoqqvqeqlwMtBjM80cW2zEnnh5v7sP1zG1WOmsmX3gWCHFFSLNu7iL+8tpKhDJj8aUhDscI4rKiKMJ39YSFZiNCOen8nGnfuDHZJpQoKa4FT1EICI/EtEPhaRj0TkQRHpWXUdY05Up2ZJPHtDP7bsPsCNz85gz4HDwQ4pKPYdLOMnL35NUkwkf7+8R5NpuJEWH8XT1/Vhz4HDjBg7k/2H7Ba9qZlgl+AqLAQeAv4FbAZeEJEfBzckE0p6tkzh8at68836nfz4xa84XFZ+/I1CzF/eW8DSzaX88/s9Tnjam2DpmJPEI1f2Yt66nfzq1bk2l5ypkUaR4FT1SVX9n6q+r6p/B/oAtwQ7LhNaTu+UzV8u7srExVv43RvzT6qT5AfzNvDitDXccmoBQ9o13DBcgXRm52x+dXYH3pmznscnLgt2OKYJaGzdBG4F2gKJgE1RbQLu6v6t2bBjP49NXEZBZjy3nNom2CHVu637yvnza3PpkZvML87sEOxw6uS2U9uwZONu/v7xEtpmJXJO15xgh2QasUZRgvPxPq66Mhf4W112JCJjRGSKiNwbkMhMyPjFWe05v1szHvhwERMWbQp2OPXqcFk5o+YcoFzh0R/0avLz54kID1zanR4tU7hr/GwWrLfrYFO9RvFrF5HxItJJVdeo6hjge8D9ddjfcCBcVQcCBdafzvgSEf5+eQ+6NE/izpdms2TT7mCHVG8enbCMpTvKue/irrROD/zMDsEQExnOU9cUkhQTyY+en8nW0pO7ZaypnjSG+xAiciFwHyDALCABaKOqvU5wf48CH6rq+yJyJRCrqv/xeX8EMAIgOzu7cNy4cXWKv7S0lISExj8clMX5Xdv2lfN/U/YTHQ5/HBhLQlTtWhU29uO5uKSMB6bvp2+Wcnvvxhtnhdoez1U7y/jrtP20Tgrj1/1iiGygVqGN/f+9QlOIMxAxDhs2bJaq9vH7pqo2mgfQHbgWuB7IqsN+xgA9vOdnAXdXt25hYaHW1cSJE+u8j4ZgcR5t1uoSbffb9/XKUVP04OGyWm3bmI9nSekBHfDXT/TUByfo+/+bEOxwauREjuc7c9Zp69+8q78cP1vLy8sDH5Qfjfn/3VdTiDMQMQIztZrze7CH6vrOJZe6Dt/Pq+qzqrrZ3zo1VApUjD+UQCOpijWNT+9WqfxteDemrNjGn99ZEOxwAkJV+c1rc9laeoB//6A3sRFNo7/bibige3PuPL0dr8xay5jJK4Mdjmlkgn3inygiPxGRVr4LRSRKRE4TkeeA605gv7OAwd7zHsCquoVpQtmlhbmMGFrA2KmrGTt19fE3aORemLaGjxds4jfndKRbbnKww6l3Pzu9Hed2zeGv7y9k4qLNwQ7HNCLBTnDnAGXASyKyQUQWiMhKYCnwA+CfqvrsCez3TeAaEXkYuAJ4L0DxmhD1m3M6MqxDJn96+xu+XLY12OGcsEUbd/GXdxdwavtMbjwlP9jhNIiwMOEfV/Sgc/Mk7njxK+bYmJXGE+wE1woYqaqneM9PB3qpamtV/ZGqzj6RnarqLqAIN2DzMFXdGaB4TYgKDxMe/UEvCjLiue2/X7Fq655gh1Rr+w6WcedLTW8orkCIi4rgmev7kp4QxQ3PzmBlE/z/M4EX7AT3OrBDRGYAo4DvA4UiUuehFlR1u6qOV9WNdd2XOTkkxkTy9HV9EIGbn5/Jrv1NaxjU+95bwJJNpTx8RQ8yE5vWUFyBkJUYw/M39keAa5+ZxubdNjDzyS7Ygy13BbKA23F939oAvwXmiYglJtPgWqfHM/LqQlZt3cNPXvyasvLgd6OpiffmbuC/09Zwy9AChrZvmkNxBUJ+RjzPXN+XbaUHue6ZGezYezDYIZkgCnYJDlU9oKozgFJV/Ymqnq6qOUCnYMdmTk4D26Tz54u68tmSLfzt/YXBDue4lm3eza9fnUOvVin84qymPRRXIPRomcKoawpZvqWUq5+eZknuJBb0BOfjO5fKqro9WIEYc1X/Vlw/KI+nJ69k/Ixvgx1OtUoPHOaWsbOIiQzniat7N/mhuAJlSLtMRl9TyNJNpVwzZjo79zat6mYTGMHuB/eYiNwkIr1wo5gY02jce34nhrTL4HdvzmPaim3BDucoqsqvX53Dyq17+PdVvWiWHHv8jU4iRR2yGHVNIYs37ub7o6ewaZfdkzvZBHs2gblAL9zoJYkisgD4BlgALFBVm83bBE1EeBiP/aA3l4z8gh89P5NXbxtE++zEYIdV6alJK3h/3kbuObcjg9pkBDucRmlYxyzGXN+HW8fOYvgTX/Lcjf1om9W4h6/avf8Qc77dybLNu1m1bS9rt+9j78HD7D1YhgKJ0RGkJ0TROj2e9tkJ9GmdRk5yTLDDbpSCmuBUdbTvaxHJxQ3X1Q24ALAEZ4IqOS6S527ox6Ujv+S6Z6bz2m2DaJ4S/JLSx99s5G8fLOK8bjmMGFoQ7HAatSHtMhk3YiA3PDudy578ksev6s0pbRvPBYGq8s36XbwzZz2fL93K4o27qGjbFB8VTsu0OBJjIkiMcafrPQcOs3rNHt6Zs75yvbz0OM7umsP3ujena4vQ79xfU8EuwX2Hqq4F1uKmzTGmUWiZFsdzN/bjiiencO0z03nlloGkxkcFLZ65a3fw03Gz6Z6bwj8u78mJjWZ3cumWm8xrtw3ipudmcs2YafzirA7cdmqboPYVXLGllLfnrOftOetZsWUPEWFC/4I0fnJaOwpbp9KxWSKZCdHV/v8eOFzG4o27mbFqO58t2cKYSSsZ9dkKCluncv2gPGKbSAvg+tSoEpwxjVWnZkk8dV0frn1mOjc8O4OxN/ULShxrt+/lpudmkhYfxdPX9iE2KjwocTRFrdPjeeuOU7jn9Xk89NFiZqwq4YHh3Ru0em/Dzn28O2cDb89Zz7x1OxGB/vlp3Dy4gHO75tTqwik6IpzuuSl0z03hpsH57Nh7kNe/WsdzU1bxk5e+JjtOOJCxgfO65Zy0F0GW4IypoQEF6fz7B724479fce0z0/lRu4a9Qt64cz9XPTWNA4fKePHm/idlZ+66io+O4F9X9qRvXir3v7+QMx/+jN+c25Er+7YkIrx+2tyV7DnI+/NcUpuxqgRV6J6bzL3nd+KC7s0DlmBT4qK4cXA+1w/K45OFm/jzG19xx4tf0aNlCn+5qAvdc1MC8jlNiSU4Y2rh7C45PHZVb3784lf8fadwyuBDJMdG1vvnbt69n6uemkrJnoO8cHN/2jWixi5NjYhwzcA8hrTL5O7X53Lvm/N57stV/OKsDpzVOTsg1ZY79x7ik4WbeHfueiYt3crhcqVNZjw/P6M93+vRnPyM+pt8NixMOKtLDhGbY9mW2JaHPlrMxY9/wc1DCvj5Ge1PqlK/JThjaumcrjk8cXVvbnthFt8fNYVnru9brw1PNu7czzVjprFx136ev7EfPVum1NtnnUzyMuJ56UcD+HD+Rh76aDG3vjCL1ulxXN2/Fed1a0ZualyN96WqrNq2ly+WbeWjbzYyZfk2DpcrLVJiuWlIPhf2aE7nZkkNWlUYJsLlfVpyVpccHvhgEaM/X8HH32zksat6nzQNUSzBGXMCzuqSw896RzNq/j4ueeILxlzXt15OGks37ea6Z6azc98hxlzXlz55aQH/jJOZiHBut2ac0Tmbj7/ZxH++WMlf31/EX99fRKdmSRS2TqFr82RapMaSkRBNZLiwbnc501ZsY9PuAyzbXMrSTbv5es0ONnr97PLS47h5SAHndM2he4vkoA96nRwbyd+Gd+N7PZrxi/FzGP7El/z2vI5cNygv5O/NWYIz5gR1y4zg1dv6ceN/ZnD5k1P42/BuXNyrRcD2/8mCTdw1fjbRkeG8fMvAk+aqOxgiw8M4v3szzu/ejJVb9/Dh/I1MWrqFN79ezwtT1xy9wRdTAQgT13ilT14qA9ukM6AgnYKM+EaZOAa1yeD9O4fwy1fm8Kd3FvDl8m08dHmPBqliDxZLcMbUQcecJN684xRu/+9X/Ozl2Xy+dAt//F6XOp009h8q45//W8Koz1fQpXkST/6wkJZpNa8uM3WTnxHPbUVtuK2oDeXlyrod+9iwcz/bSg9wuFxZuGABg/r0JCMxirz0eGIim849rdT4KJ6+rg9jJq/kgQ8WMfyJL3j6ur71ek8wmCzBGVNHWUkxjBsxgH9PWMa/Jyzl8yVb+M05HRneO5fwWlZPfb5kC394az6rtu3l6v6t+P0FnZvUCTTUhIUJLdPivnOBkbh9CYPbNZ6O4rUlItw8pICuLZK57YVZXPz4F4y8ujeDGlHn90CxkVmNCYCI8DB+fmZ73v7xYFqlxfGrV+dyxsOf8cLU1ezcd+yBfg8eLufjbzZy2cgvufaZ6QC8cFN/7r+kmyU3U28GFKTz1h2DyU6K5ppnpjN26upghxRwVoIzJoC6tkjm1VsH8cH8jYz6fDn3vjmfP739DQMK0umWm0x+ejwxUeGUlZfzbck+Fm3cxaQlW9l94DAtUmL5vwu78P2+LS2xmQbRKj2O124bxE/Hzeb3b85n+eZSfn9B51rXPDRWluCMCbCwMOH87s04r1sOs7/dwUffbKJ48WaenrSCQ2Xf7RzeIiWW87o146wu2Qxtn0lkPXU2NqY6iTGRPHVtH/76/kLGTF7J2u17+deVvYiPbvrpoel/A2MaKRGhV6tUerVK5e5zO3KorJwNO/ZzsKwcEWieHHtSdbo1jVd4mPD7CzqTlx7HH9/+hiu8/p3ZSU17lgK7XDSmgUSGh9EqPY62WQm0yUyw5GYanWsG5jHmur6s2rqHix//ggXrdwU7pDqxBGeMMabSsI5ZvHLrIFTh8ie/ZOLizcEO6YRZgjPGGPMdnZu7/p15GfHc9OyMJtvC0hKcMcaYo+QkxzD+loEM65DF79+cz33vLqCsic0xZwnOGGOMX/HREYy+tg/XD8rj6ckrufWFWew9eDjYYdVYyCU4EYkQkTUiUuw9ugU7JmOMaarCw4Q/XdiFP36vM58u3MT3R01lszewdGMXcgkO6A68pKpF3mNesAMyxpim7oZT8nnq2j4s31LKxY9/waKNjb+FZSgmuAHABSIyXUTGiIj19TPGmAA4vVM2428ZSJkql42cwsffbAx2SMckqk3rpmFVIjIK6OCzaCIwWlU3iMjzwKuq+naVbUYAIwCys7MLx40bV6cYSktLSUhIqNM+GoLFGVgWZ2BZnIFVn3GW7C/n0a8OsGpXOae3iuD7HaKICq/98F6BiHHYsGGzVLWP3zdVNaQeQLTP8zuBXxxr/cLCQq2riRMn1nkfDcHiDCyLM7AszsCq7zj3Hzqs//f2N9r6N+/qOY98rvPW7qj1PgIRIzBTqzm/h2IV5VgR6SEi4cDFwJwgx2OMMSEnOiKcP3yvM2Ou68OW3Qe46PEv+NsHC9l3sCzYoVUKxQT3Z2AsMBuYoqqfBDccY4wJXad3yubTu07l8sJcRn22gtP/Ucz4Gd9yuKw82KGFXoJT1fmq2l1Vu6nq74IdjzHGhLrkuEgeuLQ7L48YQGZSDL9+bS5nPfI542d8G9QSXcglOGOMMcHRvyCdN28fxKhrCokKD+PXr81lwN8+5Z7X5zJh0SZKDzRsJ3FrQm+MMSZgRISzu+RwVudspq0s4cVpa3hnzgZemv4tItAmM4FWaXFkJESxfcsBOvTaR7Pk2HqJxRKcMcaYgBMRBhSkM6AgnQOHy5i2ooSv1+xg3rqdbNi5j/nrdrJ732F27TtMs+T6icESnDHGmHoVHRHO0PaZDG2f+Z3lxcXFdMhJrLfPtXtwxhhjQpIlOGOMMSGpyQ/VVVcisgWo62x+GcDWAIRT3yzOwLI4A8viDKymEGcgYmytqpn+3jjpE1wgiMhMrW4stEbE4gwsizOwLM7Aagpx1neMVkVpjDEmJFmCM8YYE5IswQXG6GAHUEMWZ2BZnIFlcQZWU4izXmO0e3DGGGNCkpXgjDHGhCRLcMYYY0KSJThjjDEhyRKcHyIyRkSmiMi9tV2vptueTGpyTEQkQkTWiEix9+hW020bOM7bfGKcLSKjqou9HuPMFpFJNVjPfp81UJPj2Rh+n6b2LMFVISLDgXBVHQgUiEi7mq5XzbK2IrJFRFZ5J8QSEVkuIkkBiLUmJ+RkEflARD4WkTdEJKohT8g1PZ5Ad+AlVS3yHvMa8njWNE5VHVkRIzAJeKqa2OsrzlTgOSC+tt+noX+fTUFNjyfB/33WJAkH9eLL37nmGOs2yMWXJbijFQHjvecfA4Nrsd5Ry1R1GTAZuEZVewJzgYtVdVddgqxF4rgaeFhVzwI2AufQgCdkan48BwAXiMh074ce4W/b+jqetYgTABFpAWSr6kx/sddjnGXA94Hj7aeIIP4+ocYn5aBegFHz4xm032dNk3CwL77wf67x930a7OLLEtzR4oF13vMSILsW61W3bRdgvve8I7A4AHEWUYMTsqo+oar/815mAptp2BNyTY/nDOAMVe0HRALnHWPb+jieNY2zwh3ASO+5v9jrJU5V3aWqO2uwalB/n7UoGQX1AqwWxzOYv8+aJmEgeBdf1Zxr/CmigS6+LMEdrRSomF42geqPkb/1jlomIrFAjKpuF5GWwDZVPRiAOGt1QhaRgUCqqk6lAU/I1Px4zlXVDd7zmUA7f9vW4/GsaZyISBgwDCiuLvZ6jLOmgv37rNFJuRFcgNVU0H6ftUjCFYJy8VWhyrnGnwa7+LIEd7RZHCkN9QBW1WI9f8s6Awu9ZZ18ntdVbU7IacC/gRu9RQ15Qq7p8RwrIj1EJBy4GJhTzbb1dTxrGifAEGCaHhklwV/s9RVnTQX191nbk3IQL8BqKti/zxoJ9sWXn3ONPw128WUzeh/tTWCSiDQHzgUGiEhn4CpVvfdY6wHqZ9lFHPmj3Af0FpGOqrqojnFW/HFNxf1x+f1j9270vgLco6oV0wKNFZH7vbguBv5K/f1hvknNjuefgRcBAd5W1U+86qeGOp41jRPgbODz48R+bT3FeZRG+vusTfwVJ8VLvUVzVfWA97zBS8SN9PdZU/4uvhrkb72ac40//s5da/0sq3ucqmqPKg8gFbgCyKntejXdNgAxJuGuIh/2/uOTvR/EfVXWuw3YjruiK8ZVG3XFVfHMA+731rsW+If3fAiwAujYkMcz0Ns25s9qiEcwf58+n1d8nPejgE+BM32WjfdOcuHABOAMoBD4yHv/LODVYB/fhj6evsfS39+6t/yvwHCf1w32t17NucbfOcnfucvfsjrHaWNRNmHejfwzgc9VdWOw4zGmKhEpVteqz2/JSERuw52U53iLRgLf8N3S0u+8EnEPVf2FiAzBNWA5TxuwpGkCx9+5qz7OZ5bgjDHGhCRrZGKMMSYkWYIzxhgTkizBGWOMCUmW4IwxxoQkS3DGGGNCkiU4YxoRb/DhCd4gw5cEOx5jmjIbycSYxqUH8KUePXqKMaaWrB+cMY2EiPwUuAFIwY1reDlu6KMZQHdVPVtE4oDngSxgnqreISIZuNE/wnBjN/4ONzp7saoWi8j13keM97Ptn7xthuBGkzgH2AE8C+R6z68AfgMsVNVx3jaLVHVcvRwIYwLEqiiNaSRU9V/Az4Bn1U0TswU3vuEUVT3bW20EMF9VhwLNRKS7t+x1b8SQY42u729bgLbesteB07z15qjqYOA13HBPzwNXeeufDbwViO9sTH2yKkpjGrf5qvq6z+sOwCARKcKV9FoArYCXvfdn+9lHLG7gX3/bgkteAGtwY0N2xCU2cCU5VFVFJNHbdr6q7jvxr2RMw7ASnDGNW2mV14uBR7zS2r24pLQCqJj1utD79yBufjU4MrOyv20B9lT5jEVAX+/5b4GbvefjgGc4khCNadQswRnTtDwFnCsinwO3At96yy4UkYlAtLfe28BPRORJYNsxtq3uM3qLSDHQGxjrLX8VN+XO5IB+I2PqiTUyMSaEeA1AilW1OMD77QL8BxilqmMCuW9j6oslOGOMMSHJqiiNMcaEJEtwxhhjQpIlOGOMMSHJEpwxxpiQZAnOGGNMSLIEZ4wxJiRZgjPGGBOSLMEZU0ciIgHYR7qINJqxYf19p8YUnzE1YQnOhAwReVhEbquy7HkR6RCAfXcRkRu855eLyFPe8+8BT/hZ/xwR6ezz+jIROVVEqvub+xhoU2UfvxeRu6uJ52oRqfGYkCJyo4iM9Hl9p4j85RibDBCR/1VZ9pmI9A5GPCISXdMLCRH5sYjEeBPHdhORX4lIkoiMEpGhNY3RNH2W4ExIEJE2wB3AHSIyU0S+FpFbgSuB10VktogsqEg6IvKs937V/fhdDuwF7heRIcAh4IA3N9uDuHEfffcRBvwDiPFZfArQE/g/EfmVn/0fwA2QjIjcLyIX+C7z45D3QESGishO7ztWPA6KSILP+sOB+T6v3wG+LyKx1ey/G/CFz3dKATKArxs6Hu+zZwEzvf9b38ceEVERKfTZJAI3mPRhIB64UlV34aYCWltN/CYEWZWDafK8CT9fBb6HmxrmMtzEoVOA03Gj6l+lqped4P6jgdXAnbhEtch7qx8wAfhQRKJV9YC3/Ie4udX2i8jpqvopbsT+/cADwKUi0k9Vp3ulkiigHDhfRF7AzQjwJm7amvKKdVT1gIhE4iYmjQbCRSQZEGCiql7sE/MqjiScPOBc4EYReQNo7X3ebmCSVzCKBfqq6l4ReQc3m8A+EbkYuM/7zBRgqbd+jqomNEQ8qroDNyddxb6aA9cAg4F3gedUdaX3XgywHjcodCpu4tfPvZJbgqquqPg/9fn/MiHKEpwJBcnAC8BPcSfRdFzC2w/8wlsnQ0RiVHX/Cez/LdzJ8hDuZN4N2IBLdntwo+tHi8gZuGR6G3Ae8DQwV0TSgUG4+deuAEqAOGA6bi63p73P6QpcD/QCRgLZuBP1NbiR/y/GlQKfAnJwf789vO/uT5n37z242poSVb3EdwUvIUV5k6tWaAN0VNUdInIfkAhcBwxV1cXedsu9dRsiHkQkETc33Z3AmbikeDlwN7DTZ9UoYCju4qMPsBB3vG8DwkRkJu6Y7xaRnqq6u5pYTQiwKkrT5KnqcuAR4GrgB7gT4IfAZ7gqyiuBlrhSwons/xxV7Q/chEtoT+JKaK95r29W1T5eSeMcoBkwCVfiGY+bcmYxME5VTwe+D8zyEl9H3EkY3LQ0PYCZqtoH+BfwsKoWVpSGVHWGqvYE5gJvqmov73ue6lt158WAV3V3NrDZe50nIp/5fL3LgE+rfOWqx+lU99Euufmu0xDxiMhzuBLlE8Ao3IXLZuANXGlxqIg8662+Dzc/3jrc/8EOYDsuaT/mHdcJuGpLS24hzhKcCRV5wCe4k9pk3JX9jd7zybgSRuSJ7FhE+ovIKFypagTuBB6tqvcBfwPeEpFfeqs/oap5wDe4e4KrcdVoAMNF5BPgS+BXuJJmFkfmV1uHu5/38HHiaY4rpfT2GnZEAp95SbaPdxLf4K3e0TsW+wBUdRXQWkTae+93xyXrY5kO3CsivtPkVCbBBognEij3qnov91n+M1X9I25S2IraqFxgK/Br3PH8I25i10iOTAbbCliOCXmW4EyoaAms9Tmh3geM9jnJRqtq1ZmrayoOeFVVT1PVebgTZwKAN+9aP+A9b10V1/JxHa6RSBdcCXIBrorzQuC/uJm1l6jqWFUdX/FBqvoGcIaIzMZVud7lNZjxbaF4Ny6Zf4W731QEDPNt1AE09/b3X1UdV+X7vIar7gRXjVe1tSS4e2GzcbN571XVyUAXETnbz7r1HY8CiEgB8AGu1JYJvCsi7XCNSSqkAT/HtUodhGu8cq33vJmIpAKJqlri53uYEGP34EyoyAQGe9Vh4Fr8RXmtESvMVdUbT2Df/wb2iMgfvdd5QJaIVJS8BEgQkbtwieynuCrJv+CqxX4MICK34+4F3YSrSvVLVe8B7vFKhYdV9ZGK98Q10z8L+DNwmqreLSJ9gP5+GnVU52PgVyLyCNABV0KraojPPbgK/wCu9aoUSxswHsWVEK/B3aNsBWzhSGL9beWKqrNEZDCuBWh/XHXoeaq6T0RexzXemXCMWEwIsQRnQoKqvgK8IiLZwOO4KrT3VfVPACLSF3dCPJF9+7bgy8CdPF8A1qvqvX42aSYi8bgGGO2BqeK6DqzGlS56407QJ2I+7j5VxxPcHlw1bn9gAO5+36EabvcGrgo1BdjVgPEIMA+XrHJwrVQ/VtXXRCQKL9n6aA7MxN2H7Qj8wVv+Oq4V67H6/5kQYlWUpskTp5eI/At3v2skMNrnvftwjVAmV7+X435GuLhO3Z8Bv8RV3cWLyEciMshnvTNEZB3wOa7F5A4R6YZrOLEa1+hhAPAHEfEtTUbgmtlHip8RQ0QkSkTCVPWgqs7HnfQrOj6H4b9K0Hc/Ebh7ZEtwVYlX4RrA9BeRRSKyWEQqulFE8t0qyop7l+XeZ54DLANooHgE2O418Vdcon3S+/yXcN0LfC0DxuG6LvwOV7U6HHgZ9383Wlx/RhPirARnQkEWrjHBy8BdqlomInfgGoKoV6X2pqpWVF+iqtf721HV5V7J6z+4loSTgEtUdYn39s9F5CzgUe/eziCgGNd/a723/UW4pPszVX1DXB+wD3En/F4+HxWJa+J+I65/WGUpxjvRRwO34jo8472O8p5H4b/fWSSuxSG4Ds8LgU6qWtFc3/d7CkcueB8Cxnr97nrgNQjBdVt4HJjKke4XFeoznnXAI/LdgUx+7PM6Aa8DurjO9+8Bs4HhqrpRRH4I3I5rOblERGbhLjAursN9WdMEiKoGOwZjGjVxo5+sUtW9x1intaqurua9KFU96PsaSFLVrXWIKRbXX2ynt784r5tCUDS2eIwBS3DGGGNClN2DM8YYE5IswRljjAlJJ30jk4yMDM3Ly6vTPvbs2UN8fHxgAqpHFmdgWZyBZXEGVlOIMxAxzpo1a6uqZvp9U1WD9gDG4EZ8v7e269V02+M9CgsLta4mTpxY5300BIszsCzOwLI4A6spxBmIGHF9J/2e34NWRen1SwlX1YFAgTfkTo3Wq2ZZWxHZIiKrvL43JSKyXESSGu5bGWOMaSyCeQ+uCNexE9xQPYNrsd5Ry1R1Ga4j7zV6ZHTzi9VNdFhvHv10KQ/P2s+Tny3nqzXbOVR2QgPWG2OMCbBg3oOLx3XgBDdfU+9arFfdtl04MktwR9x4gEcRkRG4UeHJzs6muLj4hL4AwNo1B9lUepgHPnBzYEaFQ7uUMNqnhtMhLZyC5DCiwuU4e2kYpaWldfquDcXiDCyLM7AszsCp7xiDmeBKcbP2ghuJoLrSpL/1jlrmdTSNUdXtItIS2KY+nWt9qepovKGc+vTpo0VFRSf8JYqKoLi4mK59BjJjZQnTvMeby3ehyw4RFR5Gz5Yp9MtPo19+GoWtU4mPDs5hLy4upi7ftaFYnIFlcQaWxRk49R1jMBPcLFx141TcJI9+S1vVrLfWz7LOHJk4spPP8waRkRDNud2acW63ZgDs3HuIGatKmL7KJbyRny3nsYnLCA8TurZIpn9+Gv3z0+iTl0Zy7AlNU2aMMeYYgpng3sQN6NocOBcY4A2JdJV+d4T2o9bDDbhaddlFHKme3IcbyLWjqi5qiC9TVXJcJGd0zuaMztkAlB44zFertzN9ZQnTVm7j2S9WMfrzFYhAp5wk+nkJr29+GhkJ0cEI2RhjQkrQEpyq7hKRIuBM4EFV3QnsBO6twXr4Wfa8zzaTgIL6/g61kRAdwdD2mQxt77pr7D9Uxuxvd1QmvHEz1vDsl6sAaJuVUJnw+uenk5McE8TIjTGmaQpqR29V3c6R1pC1Wq+m2zZWMZHhDChIZ0BBOtCOg4fLmb9+J9NWlDB95Tbemb2eF6etAaBVWlzlPbwB+em0TIulysjqxhhjqjjpRzJpLKIiwujdKpXerVK5ragNZeXKwg27mLbSJbxPF27i1VlrAchJinElvAJXymuTmWAJzxhjqrAE10hVNEbp2iKZmwbnU16uLNtS6lpprtjG1BXbeHvOegDS46MqS3j98tPomJNEeJglPGPMyc0SXBMRFia0z06kfXYi1wxojaqyettepq3c5pXySvhg/kYAkmIi6JuX5pXy0unSPInIcBtX2xhzcrEE10SJCHkZ8eRlxPP9vq0AWLdjH9NXbvMarpTw6aLNAMRFhVPYOpVMDhLXuoTuucnERIYHM3xjjKl3luBCSIuUWC7plcslvXIB2Lx7PzNWbme6V8qbtPEQry+dQlSE63w+ID+Nfvnp9G6dQlyU/RSMMaHFzmohLCsxhvO7N+P87q7z+bsfTyQ6tzPTVmxj+qoSHpu4jPIJy4gIE7rlJld2TeiTl0ZSjHU+N8Y0bZbgTiIJUUJR52zO9Dqf795/iFle5/PpK0t4ZvJKRn3mOp93blbR+TydfvlppMVHBTl6Y4ypHUtwJ7HEmEiKOmRR1CELgH0Hy/j62yMJ76Xpa/jPF6sAaJeVQP8CV6XZPz+N7CTrfG6MadwswZlKsVHhDGqTwaA2GQAcPFzOvHU7vK4JJbz59XpemOo6n+elV3Q+dwkvN9U6nxtjGhdLcKZaURFhFLZOo7B1GrcXweGychZu2F3ZNeHjBZsYP9N1Pm+eHHMk4RWkUZARbwnPGBNUluBMjUWEh9EtN5luucncPKSA8nJl6ebSyoQ3edk23pztOp9nJER95x5eh+xEwqzzuTGmAVmCMycsLEzokJNIh5xErh2Yh6qycuueynt401aW8P481/k8OTaSvnmplQmvS/MkIqzzuTGmHlmCMwEjIhRkJlCQmcCV/Vzn87Xb97pkt8LNjffJQtf5PD4qnMI81y2hX34a3XOTiY6wzufGmMCxBGfqVW5qHLmpcQzv7XU+37W/cmix6StLeOgjN89tdEQYvVql0C8/nZhdZfQ/WEZslCU8Y8yJswRnGlRWUgzf69Gc7/VoDkDJnoNu5nNvXrzHJiylXOGfX31EtxbJ9C9wVZp9WqeSaJ3PjTG1ELQEJyLJwDggHNgDfF9VD1az7higM/Ceqt5X3TLT9KTFR3F2lxzO7pIDwK79h3j2nc/Yl5jLtBXbeOrzFYwsXk6YQOfmSZX38PrlpZFqnc+NMccQzBLc1cDDqvo/ERkJnAO8XXUlERkOhKvqQBF5RkTaAd38LFNgCi5Z7gBaAduBXqq6q2G+kqmrpJhIumdGUFTUEfA6n6/ZzlRvXrwXpq5mzOSVAHTITqycIqh/fhpZ1vncGONDVDXYMSAirwJ/V9Wpft57FPhQVd8XkSuBWKBX1WWq+h8ReQOXNCeJSDHwE1Wd52efI4ARANnZ2YXjxo2rU/ylpaUkJCTUaR8NIRTiPFSurNxZzuKSMhZvL2fZ9jL2l7n3suOEDmnhdEgNo0NaOBmx9dtKMxSOZ2NicQZWU4gzEDEOGzZslqr28fdeg5TgRGQU0MFn0QRV/bP33kAg1V9y88QD67znJUDvapYBdAHme887Aov97VBVRwOjAfr06aNFRUW1/EbfVVxcTF330RBCMc7DZeV8s35X5T286StL+Hytq+lukRJb2UqzX34a+QHufB6KxzOYLM7Aagpx1neMDZLgVPUWf8tFJA34N3DpMTYvxZXaABKAMH/LRCQWiFHV7SLSEthW3T09EzoiwsPo0TKFHi1T+NFQ1/l88abdlQnv86VbeP1rdy2UmRhdWZ3ZPz+ddlkJ1vncmBAWzEYmUcArwD2quvoYq84CBgNTgR64UtlaP8s6Awu9bTr5PDcnkbAwoVOzJDo1S+K6Qa7z+Yqte1w/PG/ElffmbgAgJS6SvnlHEl6nZonW+dyYEBLMRiY34aoWfycivwNGAvOAq1T1Xp/13gQmiUhz4FxgAK5BSdVlF3GkenIf0FtEOqrqoob4MqZxEhHaZCbQJjOBq/q3QlVZu32f1xfPJbz/LdgEQEJ0BIWtU+lf4JJetxYpREVYwjOmqQpaglPVkbikVtW9VdbbJSJFwJnAg6q6E8DPsud9tpkEFNRH3KZpExFapsXRMi2Oywpd5/ONO/czfVWJmwh2ZQkPfuhu3cZEhtG7VWrlPbzerVKJibTO58Y0FU2io7eqbgfGH2+ZMSciJzmGC3s050Kv8/m20gPMWLW9stHKvz5diipEhgs9clPcfbyCdPYdDn4LZGNM9ZpEgjOmIaUnRHNO1xzO6eo6n+/cd4hZq0sqhxgb/fkKnihejgDdFk2mX55LeH3zUkmJs87nxjQWtU5wIhIP7FfVsnqIx5hGJzk2ktM6ZnNax2wA9hw4zNdrdjC++Cs2lofz/NTVPO11Pu+Yk+h1TUinb34qWYnW+dyYYDlughORMOBK3MgjfYEDQLSIbAHeB0ar6tJ6jdKYRiQ+OoLB7TI4vC6KoqKB7D9Uxty1O909vFUlvDJrLc9NcQ2DCzLjK/vi9c9Pp3lK7HH2bowJlJqU4CYCnwD3APNVtRwq+7ANAx4QkTdU9YX6C9OYxismMryyIQrAIa/zeUWjlXfnbuCl6d8CkJsaS7/8NAZ4Y2q2To+zmc+NqSc1SXBnqOqhqgtVtQR4DXhNRGyYd2M8keFh9GyZQs+WKdxyahvKypVFG3dVThH02eItvP6V63yeVdH5vCCd/vlptM20zufGBMpxE1xFchORf+E6UCswB3hRVWf7rmOMOVp4mNCleTJdmidzwyn5qCrLt5QyzZsIdtrKbbzrdT5PjYv0SoMu4XVqlkS4JTxjTkhtGpksBN4FInGjhrwgIk+q6mP1EpkxIUpEaJuVSNusRK7u3xpV5duSfUz1uiVMX1nCR9+4zueJ0RH0yUt1Ca8gjW4tkom00VaMqZEaJzhVfdLn5fsi8hgwA7AEZ0wdiAit0uNolR7HFX1aArBh5z5vPE2X8CYudgPyxEaG07t1SuW8eD1bpljnc2OqcSLdBG4F2gKJgM2zZkw9aJYcy0U9W3BRzxYAbC09wAwv4U1bWcI/P1mCKkSFh9GjZXJlwitsnUp8tHVvNQZOrKP3+7ghsoYDfwtsOMYYfzISojm3WzPO7dYMgJ17DzFz9ZGEN/Kz5Tw2cRnhYULXFsmua0JeGn3z0oIcuTHBU+MEJyLjgT+q6kJgjIj8B/gad1/OGNOAkuMiOb1TNqd3OtL5/Ks1271ZE0p49otVjP58BSKQmxDG6bu+oX9+Gn3z08hIiA5y9MY0jNqU4F4AXhbXaWcWbh628nqJyhhTK/HREQxpl8mQdpkA7D9Uxuxvd7gGK18t4+UZ3/Lsl6sAaJMZX9ktoV9+Gs2SrfO5CU21aWTyNvC2iHQHeuImHn2/nuIyxtRBTGQ4AwrSGVCQTvfwdQwaPJT563e6hisrtvHO7PW8OG0NAC3TYivv4fXPT6NVmnU+N6GhJkN1iapWDpuuqnOBucdaxxjTuERFuKl/erdK5Vav8/nCDbsq58X7dOEmXp21FoCcpJjKkVkGFKTRJjPBEp5pkmo0VJeIvAa8paprKhZ6M3IPBq7DDef17IkEICLZwIeq2usY64zB9b17T1Xvq26ZMaZmKhqjdG2RzE2D8ykvd53Pp3rdEqau2Mbbc9YDkB4f5WY+L3BJr2OOdT43TUNNEtw5wI3ASyJSAGwHYnFVlB8D/6wY0eQE/d3bn18iMhwIV9WBIvKMiLQDuvlZpsAUYA+wA2jlxdpLVa07gzHHEBYmtMtOpF12ItcMcJ3PV2/bW9kXb9rKbXz4zUYAEmMiXMLzSnldrfO5aaRqMlTXfuAJ4AlvzMkMYJ+q7qjrh4vIabiEtPEYqxVxZGLTj3Glxl5Vl6nqf0RkMvCwqk4SkWLgJ5bcjKk9ESEvI568jHiu6Os6n6/bsc/ri7eNaStLmLBoMwBxUeEUtk6lX55LeD2s87lpJOR4t85EJA+4Hde5uwSYDbztW1153A8RGQV08Fk0AXgA+Ai4BHhTVYuq2XYM8KiqzhGRs4DeQLuqy1T1ARFZAvRX1e0ishFopaoH/exzBDACIDs7u3DcuHE1/Sp+lZaWkpCQUKd9NASLM7BO9jh3HlAWby9jcUkZS7aX8+1u16g6IgzaJIfRPi2cjqnhtE0JIzri+FWaJ/vxDLSmEGcgYhw2bNgsVe3j772aVFG+BTyKKymNwVUF/kpE3gXuUtUDx9uBqt5SdZmI/AF4QlV3HOcGdilHqjATcFWjRy0TkVggxktuLYFt/pKbF89oYDRAnz59tKio6Hhf4ZiKi4up6z4agsUZWBbnd+3Ye5AZq7Yz3RtT8/2Vu3hn+SEiKjqfF7hqzcLWaSTHHj0BiR3PwGoKcdZ3jDVJcOGqOgZAREpU9UciEgH8HJckrjvBzz4DOE1E7gB6isjTqnqzn/Vm4aolpwI9gMXAWj/LOuMGhAY368HCo/ZkjKk3KXFRnNk5mzM7u87npQcOM2u1S3jTVpTwzOSVjPrMdT7vlJNUmfD65qWRbp3PTT2oSYL7RER+7M0aoACqehh4yKsSPCGqOrTiuYgUq+rNItIZuEpV7/VZ9U1gkog0B84FBnhxVF12ETDf22Yf0FtEOqrqohON0Rhz4hKiIzi1fSantj/S+fzrNTuY5pXwXpq+hv98sQqAdlkJ5EYfYGfKOgYUpJOdFBPEyE2oqEmCuwu4R0RmAs29+1d7gYHAtkAEUXH/TVUXAPdWeW+XiBThxr98UFV3AvhZ9rzPNpOAgkDEZowJjJjIcAa2SWdgm3QADh4uZ966HZUzJkxZVsrEcbMBaJ0eR7+8IxPB5qbGWl88U2s1aUVZDtwvIv/EVSv2BFJxpaXf1Wt0R2LYzpFWk9UuM8Y0HVERYRS2dvfkbi+CTydMJKt978oS3v8WbuIVr/N5s+QYr1uCG3GlTWa8JTxzXLUZqmsv8Lb3MMaYgAoPE7rlJtMtN5mbhxRQXq4s3VzK9JXbmLqyhC+Wb+PN2a7zeUZClBttJc8lvY45iYRZ53NThU0cZYxplMLChA45iXTISeSagXmoKqu27WXaim2VHdDfn+e60CbFRFQOL9Y/P50uzZOIsM7nJz1LcMaYJkFEyM+IJz8jniv7tQJg7XY32krF45OFrvN5fFQ4vVunMqDAVWl2z00mOsI6n59sLMEZY5qs3NQ4clPjGN47F4DNu/YzfVVJ5bx4D320GIDoiDB6tUqhX75rtNKrVQpxUXb6C3X2P2yMCRlZSTFc0L05F3RvDsD2PQeZsaqksqXmYxOW8qhCRJjQPTe5MuEV5qWSFHN053PTtFmCM8aErNT4KM7qksNZXXIA2L3/EDNXb6+s0hwzeQVPfracMIHOzZPol5dO/wLX+TwtPirI0Zu6sgRnjDlpJMZEMqxDFsM6ZAGw72AZX6/ZXlnC+++01TzzxUoA2mcnfGci2CzrfN7kWIIzxpy0YqPCGdQ2g0FtMwA4cLiMeWt3elMElfD6V2sZO3U1APkZ8fTLSyPpwCHalOylZVpcMEM3NWAJzhhjPNER4fTJS6NPXhp3DIPDZeUs2LCLaStcwvvwm43s3HeIp+ZNpEVKrE/XhDTyM6zzeWNjCc4YY6oRER5G99wUuuem8KOhrvP5f9+bSHl6AdNXljBp6Rbe+HodABkJ0fTPPzLzefss63webJbgjDGmhsLChJaJYRQNyuO6Qa7z+YqteyobrUxbsY335m0AICUu8jszn3duZp3PG5olOGOMOUEiQpvMBNpkJvCDfq1QVdZu3+eNtOKNqblgE+BmVyhsnVpZpdk9N4WoCEt49ckSnDHGBIiI0DItjpZpcVxa6Dqfb9q132ulue2ozue9W3kJryCNXi1TiY2y0VYCyRKcMcbUo+ykGC7s0ZwLe7jO59tKD3gzn7tS3qMTlqKfQmS40D03pbJKs7B1KonW+bxOgp7gROQJ4ANVfecY64zBzdj9nqreV90yY4xp7NITojmnaw7ndHWdz3ftP8SsVduZ6pXwRn++gieKXefzri2SvRkT3CMlzjqf10ZQE5yIDAFyjpPchgPhqjpQRJ4RkXZANz/LFJgC7AF2AK2A7UAvVd1V39/FGGNORFJMJMM6ZjGso+t8vvfgYb5avYPpK7cxbWUJz09dzdOTXefzjjmJlcmuX34aWYnW+fxYgpbgRCQSeAp4X0QuUtW3qlm1iCMTm34MDAZ6VV2mqv8RkcnAw6o6SUSKgZ9YcjPGNCVxUREMbpfB4HZHOp/P+XZnZcJ7ddZanp/iOp8XZMRX3sPrl59Oi5TYYIbe6Iiq1v+HiIwCOvgsmgCsA84Hbgd+AmxU1X/72XYM8KiqzhGRs4DeQLuqy1T1ARFZAvRX1e0ishFopaoH/exzBDACIDs7u3DcuHF1+n6lpaUkJCTUaR8NweIMLIszsCzOmjlcrqzZVc7i7eUsKiljyfYy9h1276XHCB3TwmmfFkbL6AONvvN5II7lsGHDZqlqH3/vNUgJTlVvqbpMRB4DRqvqRhF5AbgfOCrBAaVAxWVJAhDmb5mIxAIxXnJrCWzzl9y8eEYDowH69OmjRUVFJ/zdAIqLi6nrPhqCxRlYFmdgWZwnpqxcWbxxd2W3hOkrS/hi/UFAyEosq+yW0L8gnbaZCY2q83l9H8tg3oNbBhR4z/sAq6tZbxauWnIq0ANYDKz1s6wzsNDbppPPc2OMCVnhYULn5kl0bp7EDafko6os31LK2A+nsiMqnWkrSnh3rut8nlrR+bzATRPUqVkS4Y0o4QVaMBPcGOAZEbkSiAQuE5HOwFWqeq/Pem8Ck0SkOXAuMADXoKTqsouA+d42+4DeItJRVRc1yLcxxphGQERom5XIsFaRFBX1QlX5tmRfZQlv2soSPvY6nydGR9AnL5V+3qwJ3Vokh1Tn86AlOFXdDVxeZfE64N4q6+0SkSLgTOBBVd0J4GfZ8z7bTOJI6dAYY05aIkKr9DhapcdxeZ+WAGzYue/I8GIrS5i42JUDYiPD6d06hX55LuH1apVCTGTT7Xwe9H5wNaGq2znSarLaZcYYY46vWXIsF/VswUU9WwCwtfQAM1eVMHWFS3qPfLoEVYgKD6NHy2TvPl46vVunkhDdJNIG0EQSnDHGmPqTkRDNOV2bcU7XZgDs3HuImauPlPCe/GwFj09cTniY0LV5UmXC65uXRnJc4x1txRKcMcaY70iOi+T0Ttmc3ikbgD0HDvPVGm94sRUlPPflap6atBIR6JiTVDm8WN+8NDITo4Mc/RGW4IwxxhxTfHQEQ9plMqRdJgD7D5Ux59sd3iDSJbw841ue/XIVAG0y4+mXn145N16z5OB1PrcEZ4wxplZiIsNdV4OCdAAOlZUzb93OyoYr785Zz0vT1wDQMi2Wfnnp9C9w/fFapcU1WOdzS3DGGGPqJDLcTf3Tu1Uqt57ahrJyZeGGXZUJb+Lizbz21VoAspOiK0t4UlqOqtZbwrMEZ4wxJqDCw4SuLZLp2iKZGwe7zufLNpcyzWu0Mm3FNt6Zsx6Ajt22U9g6rV7isARnjDGmXokI7bITaZedyA8HtEZVWVOyl+c++JJuLVLq7XNDp8u6McaYJkFEaJ0ez9DcyHodOcUSnDHGmJBkCc4YY0xIapD54BozEdlC9TMZ1FQGsDUA4dQ3izOwLM7AsjgDqynEGYgYW6tqpr83TvoEFwgiMrO6CfcaE4szsCzOwLI4A6spxFnfMVoVpTHGmJBkCc4YY0xIsgQXGKODHUANWZyBZXEGlsUZWE0hznqN0e7BGWOMCUlWgjPGGBOSLMEZY4wJSZbg/BCRMSIyRUTure16Nd32ZFKTYyIiESKyRkSKvUe3mm7bwHHe5hPjbBEZVV3s9RhntohMqsF69vusgZocz8bw+zS1ZwmuChEZDoSr6kCgQETa1XS9apa1FZEtIrLKOyGWiMhyEUkKQKw1OSEni8gHIvKxiLwhIlENeUKu6fEEugMvqWqR95jXkMezpnGq6siKGIFJwFPVxF5fcaYCzwHxtf0+Df37bApqejwJ/u+zJkk4qBdf/s41x1i3QS6+LMEdrQgY7z3/GBhci/WOWqaqy4DJwDWq2hOYC1ysqrvqEmQtEsfVwMOqehawETiHBjwhU/PjOQC4QESmez/0CH/b1tfxrEWcAIhICyBbVWf6i70e4ywDvg8cbz9FBPH3CTU+KQf1AoyaH8+g/T5rmoSDffGF/3ONv+/TYBdfluCOFg+s856XANm1WK+6bbsA873nHYHFAYiziBqckFX1CVX9n/cyE9hMw56Qa3o8ZwBnqGo/IBI47xjb1sfxrGmcFe4ARnrP/cVeL3Gq6i5V3VmDVYP6+6xFySioF2C1OJ7B/H3WNAkDwbv4quZc408RDXTxZQnuaKVArPc8geqPkb/1jlomIrFAjKpuF5GWwDZVPRiAOGt1QhaRgUCqqk6lAU/I1Px4zlXVDd7zmUA7f9vW4/GsaZyISBgwDCiuLvZ6jLOmgv37rNFJuRFcgNVU0H6ftUjCFYJy8VWhyrnGnwa7+LIEd7RZHCkN9QBW1WI9f8s6Awu9ZZ18ntdVbU7IacC/gRu9RQ15Qq7p8RwrIj1EJBy4GJhTzbb1dTxrGifAEGCaHulE6i/2+oqzpoL6+6ztSTmIF2A1FezfZ40E++LLz7nGnwa7+LIZvY/2JjBJRJoD5wIDRKQzcJWq3nus9QD1s+wijvxR7gN6i0hHVV1Uxzgr/rim4v64/P6xezd6XwHuUdWKWRPGisj9XlwXA3+l/v4w36Rmx/PPwIuAAG+r6ide9VNDHc+axglwNvD5cWK/tp7iPEoj/X3WJv6Kk+Kl3qK5qnrAe97gJeJG+vusKX8XXw3yt17NucYff+eutX6W1T1OVbVHlQeQClwB5NR2vZpuG4AYk3BXkQ97//HJ3g/ivirr3QZsx13RFeOqjbriqnjmAfd7610L/MN7PgRYAXRsyOMZ6G0b82c1xCOYv0+fzys+zvtRwKfAmT7LxnsnuXBgAnAGUAh85L1/FvBqsI9vQx9P32Pp72/dW/5XYLjP6wb7W6/mXOPvnOTv3OVvWZ3jtKG6mjDvRv6ZwOequjHY8RhTlYgUq2vV57dkJCK34U7Kc7xFI4Fv+G5p6XdeibiHqv5CRIbgGrCcpw1Y0jSB4+/cVR/nM0twxhhjQpI1MjHGGBOSLMEZY4wJSZbgjDHGhCRLcMYYY0KSJThjjDEhyRKcMY2IN/jwBG+Q4UuCHY8xTZmNZGJM49ID+FKPHj3FGFNL1g/OmEZCRH4K3ACk4MY1vBw39NEMoLuqni0iccDzQBYwT1XvEJEM3OgfYbixG3+HG529WFWLReR67yPG+9n2T942Q3CjSZwD7ACeBXK951cAvwEWquo4b5tFqjquXg6EMQFiVZTGNBKq+i/gZ8Cz6qaJ2YIb33CKqp7trTYCmK+qQ4FmItLdW/a6N2LIsUbX97ctQFtv2evAad56c1R1MPAabrin54GrvPXPBt4KxHc2pj5ZFaUxjdt8VX3d53UHYJCIFOFKei2AVsDL3vuz/ewjFjfwr79twSUvgDW4sSE74hIbuJIcqqoikuhtO19V9534VzKmYVgJzpjGrbTK68XAI15p7V5cUloBVMx6Xej9exA3vxocmVnZ37YAe6p8xiKgr/f8t8DN3vNxwDMcSYjGNGqW4IxpWp4CzhWRz4FbgW+9ZReKyEQg2lvvbeAnIvIksO0Y21b3Gb1FpBjoDYz1lr+Km3JnckC/kTH1xBqZGBNCvAYgxapaHOD9dgH+A4xS1TGB3Lcx9cUSnDHGmJBkVZTGGGNCkiU4Y4wxIckSnDHGmJBkCc4YY0xIsgRnjDEmJFmCM8YYE5L+P4gBERzUrTMfAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#导入使用的库\n",
    "import numpy as np;from math import *\n",
    "import matplotlib.pyplot as plt;from matplotlib import ticker\n",
    "\n",
    "#单位脉冲响应\n",
    "h = np.array([1,-0.5,1,1.5,1.5,1,-0.5,1]) #N为偶数，偶对称\n",
    "N = len(h);L = int(N/2)\n",
    "\n",
    "#幅度函数和相位函数\n",
    "b = 2*h[L-1::-1] #b(n)各值\n",
    "n = np.arange(L)+0.5;w = np.arange(501)*2*pi/500\n",
    "b = b.reshape(-1,1);w = w.reshape(-1,1) #将b(n)和w(n)转为一列\n",
    "Hw = np.dot(np.cos(w*n),b);Pw = -w*(L-0.5) ##幅度函数和相位函数\n",
    "\n",
    "#绘制单位响应\n",
    "fig,ax = plt.subplots();ax.stem(h,basefmt=\"\")\n",
    "ax.set_title('第II类线性相位的h（n)');ax.set_xlabel('n')\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False #用来显示负号\n",
    "fig.savefig('./fir_linear_phase2_1.png',dpi=500)\n",
    "\n",
    "#绘制幅度函数和相位函数\n",
    "fig,axs = plt.subplots(2,1,constrained_layout=True)\n",
    "axs[0].plot(w/pi,Hw);axs[1].plot(w/pi,Pw/pi)\n",
    "axs[0].set_title('第II类线性相位的幅度函数');axs[0].grid()\n",
    "axs[0].set_xlabel('frequency');axs[0].set_ylabel(r'$ H( \\omega )$')\n",
    "formatter = ticker.FormatStrFormatter('%1.2f$ \\pi$')\n",
    "axs[0].xaxis.set_major_formatter(formatter)\n",
    "axs[1].set_title('第II类线性相位的相位函数');axs[1].grid()\n",
    "axs[1].set_xlabel('frequency');axs[1].set_ylabel(r'$ \\theta ( \\omega )$')\n",
    "axs[1].xaxis.set_major_formatter(formatter)\n",
    "axs[1].yaxis.set_major_formatter(formatter)\n",
    "plt.show();fig.savefig('./fir_linear_phase2_2.png',dpi=500)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ec86ba38",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
